package com.fsserver.facedetection.service;

import com.fsserver.facedetection.model.FaceDetectionResult;
import com.fsserver.facedetection.model.FaceFeature;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 人脸检测服务接口
 * 
 * @author fsserver
 * @since 2024-01-01
 */
public interface FaceDetectionService {

    /**
     * 基础人脸检测
     * 
     * @param imageFile 图片文件
     * @return 检测结果
     */
    FaceDetectionResult detectFaces(MultipartFile imageFile);

    /**
     * 基础人脸检测（字节数组）
     * 
     * @param imageBytes 图片字节数组
     * @return 检测结果
     */
    FaceDetectionResult detectFaces(byte[] imageBytes);

    /**
     * 高精度人脸检测
     * 
     * @param imageFile 图片文件
     * @return 检测结果
     */
    FaceDetectionResult detectFacesHighAccuracy(MultipartFile imageFile);

    /**
     * 人脸特征提取
     * 
     * @param imageFile 图片文件
     * @return 人脸特征列表
     */
    List<FaceFeature> extractFaceFeatures(MultipartFile imageFile);

    /**
     * 人脸比对
     * 
     * @param imageFile1 第一张图片
     * @param imageFile2 第二张图片
     * @return 相似度（0-1）
     */
    Double compareFaces(MultipartFile imageFile1, MultipartFile imageFile2);

    /**
     * 批量人脸检测
     * 
     * @param imageFiles 图片文件列表
     * @return 检测结果列表
     */
    List<FaceDetectionResult> batchDetectFaces(List<MultipartFile> imageFiles);

    /**
     * 人脸年龄性别检测
     * 
     * @param imageFile 图片文件
     * @return 人脸特征（包含年龄性别信息）
     */
    List<FaceFeature> detectAgeGender(MultipartFile imageFile);

    /**
     * 人脸情绪检测
     * 
     * @param imageFile 图片文件
     * @return 人脸特征（包含情绪信息）
     */
    List<FaceFeature> detectEmotion(MultipartFile imageFile);
} 